<?php
class UsersController extends AppController {
	var $name = 'Users';
	var $helpers = array('Access');

	function index() {
		$usuario_activo=$this->Access->getMy('username');	
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		//Fin de sesion
		
		$this->User->recursive = 0;
		$this->set('users', $this->paginate());
	}
	function view($id = null) {
		$usuario_activo=$this->Access->getMy('username');	
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		//Fin de sesion
		if (!$id) {
			$this->Session->setFlash(__('Usuario no valido', true));
			$this->redirect(array('action' => 'index'));
		}
		$groups = $this->User->Group->find('list',array('fields'=>array('Group.id','Group.nombre')));
		$this->set('user', $this->User->read(null, $id));
		
	}

	function add() {
		$usuario_activo=$this->Access->getMy('username');	
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		//Fin de sesion
		if (!empty($this->data)) {
			$this->User->create();
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('Usuario Guardado', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('El Usuario no se ha guardado. Intente de nuevo', true));
			}
		}
		$groups = $this->User->Group->find('list',array('fields'=>array('Group.id','Group.nombre')));
		$municipios = $this->User->Municipio->find('list',array('fields'=>array('Municipio.id','Municipio.nombre')));
		$this->set(compact('groups', 'municipios'));
	}
	function edit($id = null) {
		$usuario_activo=$this->Access->getMy('username');	
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		//Fin de sesion
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Usuario no valido', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('Usuario Editado', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('El usuario no se ha Editado. Intente de nuevo', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->User->read(null, $id);
		}		
		$groups = $this->User->Group->find('list',array('fields'=>array('Group.id','Group.nombre')));
		$municipios = $this->User->Municipio->find('list',array('fields'=>array('Municipio.id','Municipio.nombre')));
		
		$this->set(compact('groups', 'municipios'));
	}

	function delete($id = null) {
		$usuario_activo=$this->Access->getMy('username');	
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		//Fin de sesion
		if (!$id) {
			$this->Session->setFlash(__('Usuario no valido', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->User->delete($id)) {
			$this->Session->setFlash(__('Usuario Eliminado', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('El Usuario no se ha eliminado', true));
		$this->redirect(array('action' => 'index'));
	}
	
	function contrasena($id = null) {
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		//Fin de sesion
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Usuario Invalido', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			$user=$this->User->read(null, $id);
			$actual = $user['User']['password'];
			$nueva = $this->data['User']['passwords'];
			
			if($actual != $nueva){
				$this->data['User']['password']=$this->Auth->password($nueva);
			}						
			if($this->User->save($this->data)){				
				$this->Session->setFlash(__('Contrase&ntilde;a Cambiada', true));
				$this->redirect(array('controller'=>'users','action' => 'bienvenido'));
			}else{
				$this->Session->setFlash(__('La contrase&ntilde;a no fue guardada. Intente de nuevo.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->User->read(null, $id);
		}

		$user = $this->data;

		$this->set(compact('user'));
	}
	
	function login() {	
		if ($this->Session->read('Auth.User')) {
			$this->Session->setFlash('Bienvenido!');
			$this->redirect(array('controller'=>'pages','action' => 'home'));
		}		
	}
	function logout() {
		$this->Session->setFlash('Ha cerrado sesion correctamente!');
		$this->redirect($this->Auth->logout());		
	}
	
	function bienvenido(){
		$usuario_activo=$this->Access->getMy('username');	
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		//Fin de sesion
		$this->set('usuario',$this->User->read(null, $this->Access->getMy('id')));
	}
	
	function beforeFilter() {
	    parent::beforeFilter(); 
	    //$this->Auth->allowedActions = array('login', 'logout');
	}
}